CC=gcc
CC=gcc
CFLAGS=-Wall -Wextra -Iinc
SRC_DIR=src
OBJ_DIR=build
TARGET=main

# 使用通配符查找所有源文件和生成对应的目标文件
SRCS=$(wildcard $(SRC_DIR)/*.c)
OBJS=$(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRCS))

# 默认目标
all: $(TARGET)

# 链接目标文件生成可执行文件
$(TARGET): $(OBJ_DIR) $(OBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS)

# 编译每个源文件生成对应的目标文件
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
	$(CC) $(CFLAGS) -c $< -o $@

# 确保build目录存在
$(OBJ_DIR):
	mkdir -p $(OBJ_DIR)

# 清理构建文件
clean:
	rm -f $(OBJS) $(TARGET)
	if [ -d $(OBJ_DIR) ]; then rmdir $(OBJ_DIR); fi

# 声明伪目标
.PHONY: all clean